Trampoline (computing)
後で実行する関数を返すことで、maximum call stackを回避して末尾再帰最適化と同等のことをするテクニック
lispインタプリタ書いてたらその便利さがやっと腑に落ちた
make a lispではwhileループで対処してたが、やっぱ見づらい
ただ、このtrampolineというテクニックを初学者に分かりやすく説明しろと言われても、自信がない
借りたスタックの早期返却?
返すべき値は確定していて、これを呼び出せば良い。
しかし、いまここの関数スコープはもう不要
というふうに考えると良いだろうか
この名前は、「こういうパターンは最適化できるよ」というパターンを指している
最適化できる条件、パターンを示していて、何が起きているのかを説明できてないのではないか。
「早期スコープ棄却」と考えると、分かりやすい(ほんとか?)
こういうとき、miyamonz.iconが既に理解が終わってしまっていて、理解しやすさの考察が難しい
関数呼び出しによってスタックが積み上がってリソースを食うという理解がないと、問題がよくわからないよな
自分がすぐ理解できたの、rui氏のc compilerのやつ書いてたからかもしれん
なにか関数呼び出しに際して、スタックを手軽にvisualizeできたら説明がしやすいかもしれん
stdoutにstackをindentをかけながら描画していくとか?